package com.escool.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.escool.model.TbCatMateriaTemp;
import com.escool.model.TbParentesco;
import com.escool.model.VwAlumnoNotas;
import com.escool.model.VwAlumnosMateria;
import com.escool.model.VwAlumnosUsuario;
import com.escool.model.VwComunicacionesEntrada;
import com.escool.model.VwCupoSecciones;
import com.escool.model.VwInscripciones;
import com.escool.model.VwMateriaSeccion;
import com.escool.model.VwMensajesEnv;
import com.escool.model.VwNotas;
import com.escool.model.VwParentesco;
import com.escool.model.VwPersonal;
import com.escool.model.VwProfesorseccion;
import com.escool.model.VwPromedioPeriodo;
import com.escool.model.VwRotaciones;
import com.escool.model.VwSecciones;
import com.escool.model.VwSede;
import com.escool.model.VwSedeSeccion;
import com.escool.model.VwUser;
import com.escool.model.VwUsuarios;

@Repository
public class FindDAOImpl implements FindDAO{
 @Autowired
 SessionFactory sessionFactory;
	@Override
	public List<VwSede> listVwSede() {
		// TODO Auto-generated method stub
		String hql = "from VwSede";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwSecciones> listVwSecciones() {
		// TODO Auto-generated method stub
		String hql = "from VwSecciones ";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwPersonal> listVwPersonal() {
		// TODO Auto-generated method stub
		String hql = "from VwPersonal";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwMateriaSeccion> listVwMateriaSeccion() {
		// TODO Auto-generated method stub
		String hql = "from VwMateriaSeccion";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwAlumnoNotas> listVwAlumnoNotas(String codEmp) {
		// TODO Auto-generated method stub
		String hql = "from VwAlumnoNotas where id.codigoEmp = '"+ codEmp.trim() +"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwSedeSeccion> listVwSedeSeccion() {
		// TODO Auto-generated method stub
		String hql = "from VwSedeSeccion";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<TbCatMateriaTemp> listTbCatMateriaTemp() {
		// TODO Auto-generated method stub
		String hql = "from TbCatMateriaTemp";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}
	
	@Override
	public List<TbParentesco> listTbParentesco(){
		String hql = "from TbParentesco";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwParentesco> listVwParentesco(String codAlumno) {
		// TODO Auto-generated method stub
		String hql = "from VwParentesco where id.codigoAlumno='"+codAlumno+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwUser> listVwUser() {
		// TODO Auto-generated method stub
		String hql = "from VwUser";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwUser> listVwUser(String name) {
		// TODO Auto-generated method stub
		String hql = "select id.fullMail from VwUser where  id.fullMail like '%"+name+"%'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwNotas> listVwNotas() {
		// TODO Auto-generated method stub
		String hql = "from VwNotas";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwNotas> listVwNotas(int idRotacionHasActividad) {
		// TODO Auto-generated method stub
		String hql = "from VwNotas where  id.tbRotacionesHasActividadIdRotacionesHasActividad ="+idRotacionHasActividad;
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwUsuarios> listVwUsuarios(String userName,int idRoles) {
		// TODO Auto-generated method stub
		String hql = "from VwUsuarios where id.nombreUsuario='"+userName+"' and id.idsgRoles="+idRoles;
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}
	
	@Override
	public List<VwUsuarios> listVwUsuarios(String userName) {
		// TODO Auto-generated method stub
		String hql = "from VwUsuarios where id.nombreUsuario='"+userName+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwMensajesEnv> listVwMensajesEnv(String userName) {
		// TODO Auto-generated method stub
		String hql = "from VwMensajesEnv where id.codigoEmisario='"+userName+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwAlumnoNotas> listNotasAlumno(String alumnoCode) {
		// TODO Auto-generated method stub
		String hql = "from VwAlumnoNotas where id.codigoAlumno = '"+ alumnoCode.trim() +"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwNotas> listVwNotas(String alumno) {
		// TODO Auto-generated method stub
		String hql = "from VwNotas where id.codigoAlumno = '"+ alumno.trim() +"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwNotas> listVwNotasProfe(String codEmp) {
		// TODO Auto-generated method stub
		String hql = "from VwNotas where id.codigoEmp = '"+ codEmp.trim() +"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}
	
	@Override
	public List<VwNotas> listVwNotasAlumnoPeriodoMateria(String alumno, int periodo, String materia) {
			// TODO Auto-generated method stub
		String 	hql = "from VwNotas where id.codigoAlumno = '"+ alumno.trim() +"' ";
				hql += " and id.nombreMateria = '"+ materia.trim() +"' ";
				hql += " and id.periodoEvaluacion = "+ periodo;				
				
			return sessionFactory.getCurrentSession().createQuery(hql).list();
		}
	
	@Override
		public List<VwNotas> listVwNotasPeriodo(int periodo) {
			// TODO Auto-generated method stub
		String hql = "from VwNotas where id.periodoEvaluacion = "+ periodo;
		return sessionFactory.getCurrentSession().createQuery(hql).list();
		}
	
	@Override
		public List<VwPromedioPeriodo> listVwPromedioPeriodoProf(String profesor) {
			String hql = "from VwPromedioPeriodo where id.codigoEmp = '"+ profesor.trim() +"'";
			return sessionFactory.getCurrentSession().createQuery(hql).list();
		}
	
	@Override
		public List<VwPromedioPeriodo> listVwPromedioPeriodoAlum(String alumno) {
			String hql = "from VwPromedioPeriodo where id.codigoAlumno = '"+ alumno.trim() +"' ";
			return sessionFactory.getCurrentSession().createQuery(hql).list();
		}
	
	@Override
		public List<VwParentesco> listVwAlumnoEncargado(String encargado) {
			// TODO Auto-generated method stub
			String hql = "from VwParentesco where id.emailEncargado='"+encargado+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
		}

	@Override
	public List<VwCupoSecciones> listVwCupoSecciones() {
		// TODO Auto-generated method stub
		String hql = "from VwCupoSecciones";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwInscripciones> listVwInscripciones(int id_expediente) {
		// TODO Auto-generated method stub
		String hql = "from VwInscripciones where id.tbExpedienteIdExpediente="+id_expediente;
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwInscripciones> listVwInscripciones(int id_expediente,	String periodo) {
		// TODO Auto-generated method stub
		String hql = "from VwInscripciones where id.tbExpedienteIdExpediente="+id_expediente + "and id.nombrePeriodo='"+periodo+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwInscripciones> listVwInscripciones() {
		// TODO Auto-generated method stub
		String hql = "from VwInscripciones";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwRotaciones> listVwRotaciones() {
		// TODO Auto-generated method stub
		String hql = "from VwRotaciones";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwProfesorseccion> listSeccionedRot(String codeEmp) {
		// TODO Auto-generated method stub
		String hql = "from VwProfesorseccion where id.codigoEmp='"+codeEmp+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwRotaciones> listMateriasRot(String codeEmp, String sedeSeccion) {
		// TODO Auto-generated method stub
		String hql = "select id.nombreMateria,id.idSedeSeccionHasMateria" +
				" from VwRotaciones where id.codigoEmp='"+codeEmp+"' and id.tbSedeHasSeccionIdSedeHasSeccion="+Integer.parseInt(sedeSeccion) + "group by id.nombreMateria,id.idSedeSeccionHasMateria";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwAlumnosUsuario> listVwAlumnosUsuario(String query,int seccionsedeId) {
		// TODO Auto-generated method stub
		String hql = "select id.fullMail from VwAlumnosUsuario where  id.fullMail like '%"+query+"%' and id.idSedeHasSeccion="+seccionsedeId;
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwComunicacionesEntrada> listVwComunicacionesEntrada(
			String codigoUsuario) {
		// TODO Auto-generated method stub
		String hql = "from VwComunicacionesEntrada where id.codigoReceptor='"+codigoUsuario+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwAlumnosUsuario> listVwAlumnosUsuario(String query,
			int seccionsedeId, String tipo) {
		// TODO Auto-generated method stub
		String hql = "select id.fullMail from VwAlumnosUsuario where  id.fullMail like '%"+query+"%' and id.idSedeHasSeccion="+seccionsedeId +" and id.codigoTipo like'%"+tipo+"%'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwAlumnosUsuario> listVwAlumnosUsuario(int seccionsedeId,
			String tipo) {
		// TODO Auto-generated method stub
		String hql = "select id.fullMail from VwAlumnosUsuario where   id.idSedeHasSeccion ="+seccionsedeId +" and id.codigoTipo like'%"+tipo+"%'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwAlumnosUsuario> listVwAlumnosUsuario(int seccionsedeId) {
		// TODO Auto-generated method stub
		String hql = "select id.fullMail from VwAlumnosUsuario where   id.idSedeHasSeccion ="+seccionsedeId;
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwAlumnosMateria> listVwAlumnosMateria(String codAlumno) {
		// TODO Auto-generated method stub
		String hql = "from VwAlumnosMateria where   id.codigoAlumno ='"+codAlumno+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwUser> listVwUserTipo(String tipoUsuario) {
		// TODO Auto-generated method stub
		String hql = "select id.fullMail from VwUser where   id.catUsuario ='"+tipoUsuario+"'";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public List<VwUser> listVwUserTipo() {
		// TODO Auto-generated method stub
		String hql = "select id.fullMail from VwUser ";
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}



}
